Scroll to navigation

READLINK(2) Linux Programmer's Manual READLINK(2)

名前

readlink - シンボリック・リンクの値を読む

書式

#include <unistd.h>

ssize_t readlink(const char *path, char *buf, size_t bufsiz);


glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):

readlink(): _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L

説明

readlink() は path で与えられたシンボリック・リンクの内容を buf バッファーへ格納する、 buf のサイズは bufsiz である。 readlink() は NULL バイトを buf に追加しない。 その内容全てを格納するのにバッファーが小さ過ぎる場合は、 (bufsiz バイトの長さに) 内容を切り詰める。

返り値

成功すると、 readlink() は buf に格納されたバイト数を返す。 エラーの場合、-1 を返し、 errno にエラーを示す値を設定する。

エラー

パスのディレクトリ部分に検索許可が与えられていない (path_resolution(7) も参照すること)。
buf がプロセスに割り当てられたアドレス空間の外を指している。
bufsiz が正でない。
指定したファイルがシンボリック・リンクでない。
ファイル・システムの読み込み中に I/O エラーが起こった。
パス名にシンボリック・リンクが多すぎる。
パス名かパス名の一部分が長過ぎる。
その名前のファイルが存在しない。
カーネルに十分なメモリがない。
パスのディレクトリ部分がディレクトリでない。

準拠

4.4BSD (readlink() 関数コールは 4.2BSD で現われた), POSIX.1-2001.

注意

バージョン 2.4 以前の glibc (バージョン 2.4 を含む) では、 readlink() の返り値の型は int で宣言されていた。現在では、返り値の型は ssize_t である (返り値 ssize_t は POSIX.1-2001 で (新たに) 必須となった)。

関連項目

lstat(2), readlinkat(2), stat(2), symlink(2), path_resolution(7), symlink(7)

2007-07-26 Linux